package utils
{
	public class DateUtil
	{
		/**
		 * 格式化日期
		 */
		public static function formatDate(date:Date, formatString:String="YYYY-MM-DD"):String
		{
			if(date != null)
			{
				var dateFormat:DateFormatter = new DateFormatter();
				dateFormat.formatString = formatString;
				return dateFormat.format(date);
			}
			return "";
		}
		
		/**
		 * 计算两个时间相隔的日期
		 */
		public static function calWorkDays(startTime:Date, endTime:Date):Number
		{
			if(startTime != null && endTime != null)
			{
				return Math.floor(endTime.getTime() - startTime.getTime()) / (1000 * 60 * 60 * 24) + 1;
			}
			return 0;
		}
		
		/**
		 * 比较两个时间的大小，
		 * <br/>a < b 返回-1；
		 * <br/>a = b 返回0；
		 * <br/>a > b 返回1；
		 * @param p_timeA
		 * @param p_timeB
		 * @return 
		 * 
		 */		
		public static function compareTime(p_timeA:Date, p_timeB:Date):int
		{
			var diff:Number = p_timeA.time - p_timeB.time;
			if(diff > 0)
				return 1;
			else if(diff == 0)
				return 0;
			else
				return -1;
		}
		
		/**
		 * 将字符串格式化为日期
		 * @param p_str 将要格式成日期的字符串，规则如:YYYY-MM-DD HH:NN:SS
		 * @return 返回日期，如果字符串的规则不正确，则返回null
		 * 
		 */		
		public static function formatStrToDate(p_str:String, p_hasTimeStr:Boolean):Date
		{
			var arr:Array = p_str.split(" ");
			if(p_hasTimeStr && arr.length != 2)return null;
			var yArr:Array = arr[0].toString().split("-");
			if(yArr.length != 3)return null;
			var hArr:Array = [0, 0, 0];
			if(p_hasTimeStr){
				hArr = arr[1].toString().split(":");
				if(hArr.length != 3)return null;
			}
			try{
				return new Date(yArr[0], int(yArr[1]) - 1, yArr[2], hArr[0], hArr[1], hArr[2]);
			}catch(err:Error){
			}
			return null;
		}
	}
}